package tec;
/**
 * Cette classe représente l'état d'un passager dans un transport en commun.
 * Il y a un état à l'exterieur du transport (dehors) et deux états à 
 * l'intérieur (assis, debout).
 *  
 * Les instances de cette classe sont des objets constants.
 *
 * @author Georgy
 * @since 2007-2008
 **/
class EtatPassager {
  private Etat monEtat;
  public static final EtatPassager dehors = new EtatPassager(Etat.DEHORS);
  public static final EtatPassager assis = new EtatPassager(Etat.ASSIS);
  public static final EtatPassager debout = new EtatPassager(Etat.DEBOUT);


    private EtatPassager(Etat e){
	monEtat=e;
    }

  public void changerAssis(){
	monEtat = assis.monEtat;
  }  

 public void changerDehors(){
	monEtat = dehors.monEtat;
  }  

 public void changerDebout(){
	monEtat = debout.monEtat;
  }  

  /**
   * Le passager est-il à l'extérieur du transport ?
   *
   * @return vrai si instanciation avec DEHORS;
   */
  public boolean estExterieur() {
    return monEtat == Etat.DEHORS;
  }

  /**
   * Le passager est-il assis à l'intérieur du transport ?
   *
   * @return vrai si instanciation avec ASSIS;
   */
  public boolean estAssis() {
    return monEtat == Etat.ASSIS;
  }

  /**
   * Le passager est-il debout à l'intérieur du transport ?
   *
   * @return vrai si instanciation avec DEBOUT;
   */
  public boolean estDebout() {
    return monEtat == Etat.DEBOUT;
  }

  /**
   * Le passager est-il a l'intérieur du transport ?
   *
   * @return vrai si instanciation avec ASSIS ou DEBOUT.
   */
  public boolean estInterieur() {
    return estAssis() || estDebout();
  }



  /**
   * Cette méthode est heritée de la classe {@link java.lang.Object}.
   * Très utile pour le débogage, elle permet de fournir une 
   * chaîne de caractères correspondant à l'état d'un objet.
   * <p> Un code par défaut est définit dans 
   * {@link java.lang.Object#toString() la classe Object} 
   * Il faut adapter (redéfinir) le code de cette méthode à chaque classe.
   *
   * Pour les chaînes de cararctères, l'opérateur + correspond a la concaténation. 
   */
  @Override
  public String toString() {
    return "<" + monEtat + ">";
  }
}
